草庐IT

Java 定时器

全部标签

go - 在 golang、计时器或 goroutine 循环中等待事件直到过期的最佳方法是什么?

状态机的第一个状态是等待一个事件,如果某天事件没有发生,状态机将切换到第二个状态。如果事件发生在此期间,状态机将切换到第三状态。我有两个选择:1、使用定时器。将计时器设置为特定日期。时间到了,检查事件是否发生。如果发生,切换到第三种状态。如果不是,则切换到第二种状态。期间可能会创建上千个定时器。2、使用routine循环。启动例程以运行循环。每半小时,goroutine将检查事件是否发生。如果事件发生,切换到第三种状态。否则,一直循环直到某几天过期,然后切换到第二状态。我的问题是time.Timer和goroutine,哪个更适合这种情况? 最佳答案

golang 计时器从零重新计算

我需要编写一个计时器,它可能会将自身重置为零。例如,我有一个trm:=time.NewTimer(10)然后,如果在它到期之前发生了什么事情,计时器将清除它拥有的所有数据,并从0重新计算,就像我重新新建一个相同的计时器一样。我检查了Go的时间API,但没有找到任何东西。有什么建议吗?谢谢。 最佳答案 如何使用time.Reset?Resetchangesthetimertoexpireafterdurationd.Itreturnstrueifthetimerhadbeenactive,falseifthetimerhadexpir

go - 如何设置 HTTP Post 实体,如 Java 的方法 HttpPost.setEntity

我是一名新的golang程序员。在java中,使用HTTP.setEntity()方法很容易设置。但在golang中,我有测试服务器的方式来设置它,但我们的服务器仍然缺少接收实体数据。这是代码:funcbathPostDefects(){url:="http://127.0.0.1/edit"varjsonStr=[]byte(`{"key":"abc","id":"110175653","resolve":2,"online_time":"2016-7-22","priority":1,"comment":"something.."}`)req,err:=http.NewReques

Golang 计时器过期 VS 停止之间的区别?

基于此示例(https://gobyexample.com/timers),计时器可以停止或过期。但是有什么区别呢?packagemainimport"time"import"fmt"funcmain(){timer1:=time.NewTimer(time.Second*2) 最佳答案 用某个duration创建的计时器d(在创建时指定)在此类持续时间过去后到期。这意味着等待持续时间d的计时器channel将仅在持续时间结束后(甚至可能更晚,具体取决于调度)解除对调用者的阻塞。定时器到期可以被认为是事件触发。如果在定时器创建后,你

java - 我将如何在 Java 中实现 Go 的无缓冲 channel ?

Go同时提供unbufferedandbufferedchannels用于goroutines(线程)之间的通信。是straightforward在Java中将缓冲channel实现为有界缓冲区。Go的无缓冲channel要求一个协程在另一个协程接收时发送。任何人都可以向我解释如何在Java中实现它吗? 最佳答案 在Java中你可以使用SynchronousQueue,Java8的源代码在这里http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/

java - 如何使用 JNA 为具有多个返回值的 go 函数编写接口(interface)

我正在尝试导出一些Go函数并在Java中调用它们,使用JNA,但我不知道如何在Java中为具有多个返回值的Go函数定义接口(interface)。假设Go函数是://exportgenerateKeysfuncgenerateKeys()(privateKey,publicKey[]byte){return.....}返回值有两项,但在Java中,只允许有一项返回值。我能做什么? 最佳答案 cgo为多个返回值创建专用的C结构,并将各个返回值作为结构元素。在您的示例中,cgo将生成/*ReturntypeforgenerateKeys

java - 向 TCP 服务器指示 Java TCP 客户端已完成写入流

我正在编写一个连接到GolangTCP服务器的JavaTCP客户端。服务器使用以下代码从客户端读取消息:func(tcpHandlerTCPHandler)getClientMsgBytes(connection*net.TCPConn)([]byte,error){clientMsgBytes,err:=ioutil.ReadAll(connection)iferr!=nil{returnnil,err}returnclientMsgBytes,nil}我的客户端使用以下代码向服务器发送消息:try(Socketsocket=newSocket("localhost",9000)){

java - 与Levenshtein的快速比较

Closed.Thisquestionneedstobemorefocused。它当前不接受答案。想改善这个问题吗?更新问题,使其仅关注editingthispost一个问题。去年关闭。Improvethisquestion我正在尝试寻找一种最佳方法,将一个文本(最大长度:300)与Levenshtein的300.000进行比较。最后,我需要一个带有简单RESTAPI的Web服务。将来,条目数将超过300.000。在后台,我正在使用一个简单的MySQL数据库。我的第一个想法是使用MySQL来完成这项工作。为此,我找到了这个:https://github.com/juanmirocks/

dictionary - Golang 多个计时器与 map+channel+mutex

所以我正在使用map/channel/mutex实现多个计时器。为了取消计时器,我有一个存储取消信息的channel映射,下面是代码:vartimerCancelMap=make(map[string]chaninterface{})varmutexLockersync.MutexfunccancelTimer(timerIndexstring){mutexLocker.Lock()defermutexLocker.Unlock()timerCancelMap[timerIndex]=make(chaninterface{})timerCancelMap[timerIndex]现在这个

java - 如何在 AWS 上部署自己的服务器(用 Java 编写)(类似于 Openshift 的 DIY)?

在AWS上有类似“Openshift的DIY”的东西吗?我从来没有用过AWS,现在需要在云上部署我们团队自己的服务器(写java),而且我们必须使用AWS。此服务器监听自定义端口,并为客户端提供RPC服务。我想知道是否可以在AWS上进行DIY,如何进行?以及是否支持go语言服务器? 最佳答案 OpenShift是一家PaaS提供商。它为您提供了一个带有Java运行时和应用程序服务器(Tomcat、Wildfly等)的P平台,您可以在其上部署您的应用程序。AWS有很多不同的服务。EC2是一个IaaS。它为您提供了一个I基础设施。它使用